#ifndef CSE168_SHINY_H_INCLUDED
#define CSE168_SHINY_H_INCLUDED

#include "Material.h"

class Shiny: public Material
{
public:
    Shiny(const Vector3 & ks = Vector3(1));
    virtual ~Shiny();

    const Vector3 & ks() const {return m_ks;}

    void setKs(const Vector3 & ks) {m_ks = ks;}

    virtual void preCalc() {}
    
    virtual Vector3 shade(const Ray& ray, const HitInfo& hit, char RayCount, const Scene& scene,
    						int mode=RAYTRACE, Vector3 rayColor=Vector3(1), bool diffuseRay=false) const;

    virtual void handlePhoton(const Ray& ray, const HitInfo& hit, char rayCount, Vector3 photonFlux, const Scene& scene,
    					 	  int mode=APPM_PHOTON, LightPath *lp=0) const;
protected:
    Vector3 m_ks;
};

#endif // CSE168_SHINY_H_INCLUDED
